package scau.hotel.hotel_service.util;

import org.springframework.stereotype.Repository;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

@Repository
public class DateUtil {


    /**
     * @param nowTime   当前时间
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 判断当前时间在时间区间内
     */
    public boolean isContainDate(Date nowTime, Date startTime, Date endTime) {
        if (nowTime.getTime() == startTime.getTime()
                || nowTime.getTime() == endTime.getTime()) {
            return true;
        }

        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);

        Calendar begin = Calendar.getInstance();
        begin.setTime(startTime);

        Calendar end = Calendar.getInstance();
        end.setTime(endTime);

        if (date.after(begin) && date.before(end)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 日期转换星期几
     * @param date  需要转换的日期
     * @return
     */
    public String dateToWeek(Date date) {
        String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 指示一个星期中的某天,0代表星期天。
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1 < 0 ? 0 : cal.get(Calendar.DAY_OF_WEEK) - 1;
        return weekDays[w];
    }
    /**
     * 通过时间秒毫秒数判断两个时间的间隔
     * @param date1
     * @param date2
     * @return
     */
    public int differDay(Date date1,Date date2) { //后减前
//        int days = (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));
//        return days;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String s1 = sdf.format(date1); // 把带时分秒的 date1 转为 yyyy-MM-dd 格式的字符串
        String s2 = sdf.format(date2); // 把带时分秒的 date1 转为 yyyy-MM-dd 格式的字符串
        Date d1 = new Date();
        Date d2 = new Date();
        try {
            d1 = sdf.parse(s1); // 把上面的字符串解析为日期类型
            d2 = sdf.parse(s2); // 把上面的字符串解析为日期类型
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int days = (int) ((d2.getTime() - d1.getTime()) / (1000*3600*24));
        return days;
    }
}
